﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using hcms.Admin;
using System.Data;
using System.Text.RegularExpressions;
using System.IO;
using System.Text;

namespace hcms.Templates
{
	// 文档模板类，只能从错误页面通过Server.Execute(url)转来，不能直接调用。
	// 调用该类生成静态文档，静态文档名为cid-aid.htm，如001-59779bb8-6bf5-4b95-a302-d41f0d1bea75.htm
	// 第一次打开001-59779bb8-6bf5-4b95-a302-d41f0d1bea75.htm时，该文件并不存在，通过IIS404转到error404.aspx，用Server.Execute(url)调用本类生成静态文件。
	// 第二次及以后直接打开静态文件。
	// 编辑文档或栏目时删除下属所有静态文件，下次打开重复第一次过程。
	// 删除文档或栏目时删除静态文件。
	// 编辑或删除文档模板时删除对应的静态文档
	public partial class a0 : System.Web.UI.Page
	{
		protected string cid, aid, tid;
		protected DataRow arow;
		protected Model model = Global.model;
		public DataRowCollection posrows;
		protected void Page_Load(object sender, EventArgs e)
		{
			cid = Request["cid"];	// 栏目id
			aid = Request["aid"];	// 文章id
			tid = Request["tid"];	// 模板id
			posrows = model.getCurrentPos(cid);	// 当前位置
			arow = model.getArticleByID(aid);	// 文章记录

			// 页面标题，格式：文章名称 | 栏目名称 | ... | 驾驶技术网
			StringBuilder title = new StringBuilder(1000);
			string ti = arow["artBrowserTitle"].ToString();
			if( ti.Length == 0 )								// 如果没有设置网页标题，取文档标题
				title.Append(arow["artTitle"]);
			else
				title.Append(ti);								// 否则取网页标题

			int n = posrows.Count;
			for (int i = n-1; i >= 0; i--)
			{
				title.Append(" | ");
				title.Append(posrows[i]["colName"]);
			}
			title.Append(" | 驾驶技术网");
			Page.Title = title.ToString();
		}

		/// <summary>
		/// 服务器控件内容发送到提供的 HtmlTextWriter 对象，此对象编写将在客户端呈现的内容。详见 http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.render
		/// </summary>
		/// <param name="writer">接收HTML文本的数据流</param>
		protected override void Render(HtmlTextWriter writer)
		{
			/*// 如果是从错误页面转过来，url不变，是原来的地址：http://localhost/error404.aspx?404;http://localhost:80/Articles/001-59779bb8-6bf5-4b95-a302-d41f0d1bea75-18.htm
			string str = Request.Url.Query;
			//"?404;http://localhost:80/Articles/004-59779bb8-6bf5-4b95-a302-d41f0d1bea75-18.htm"
			String regex = @"^\?404;http://[^/]+/Articles/(\d+)-(\w{8}-\w{4}-\w{4}-\w{4}-\w{12})\.htm";
			Match match = Regex.Match(Request.Url.Query, regex);
			if (match.Success)
			{
	// 保存静态文件
	cid = match.Result("$1");
	aid = match.Result("$2");*/
	string pathhtm = string.Format("{0}Articles\\{1}-{2}.htm", Request.PhysicalApplicationPath, cid, aid);
	using (FileStream fs = new FileStream(pathhtm, FileMode.Create, FileAccess.Write, FileShare.Write))
	{
		using (StreamWriter streamwriter = new StreamWriter(fs, System.Text.Encoding.GetEncoding("utf-8")))
		{
			using (HtmlTextWriter htmlwrite = new HtmlTextWriter(streamwriter))
			{
	base.Render(htmlwrite);
			}
		}
	}

	string url = string.Format("/Articles/{0}-{1}.htm", cid, aid);
	Server.Execute(url);

	// 保存文档模板id到hcms_ArticleIDandColumnID表中
	string strsql = string.Format("UPDATE hcms_ArticleIDandColumnID SET acidTemplateID = '{0}' WHERE acidColumnID = '{1}' AND acidArticleID = '{2}'", tid, cid, aid);
	model.da.Execute(strsql);
			/*}
			else// 如果不是从错误页面转来，直接输出
			{
	base.Render(writer);
			}*/
		}


	}
}